
"""
小Q得到了一个包含n个整数的数组a，他非常喜欢三元组，所以他把所有相邻的三个位置都看成一个三元组，然后抄在了他的本子上一共写了n-2个三元组。
当且仅当两个三元组恰好有一个位置不同时，小Q认为这两个三元组蕴含了韵律的美，即满足以下 条件之一时，小Q认为一对三元组符合他的要求：
b1≠c1且b2=c2且b3=c3
b1=c1且b2≠c2且b3=c3
b1=c1且b2=c2且b3≠c3
找出所有他写在本子上的三元组中，符合他的要求的三元组对的数量


输入描述：
单个数据包含多组测试用例
第一行包含一个整数t，表示测试用例的数量。
对于每组数据：
第一行包含一个整数n，表示数组a的长度。
第二行包含n个整数a1，a2，...，an。表示数组的元素


"""
# 核心解法：
# 该算法将三元组按“固定两位、变动一位”进行分组，计算每组内“变动位不同”的配对数量，并对三种位置分别求和，时间复杂度近似 O(n)

import sys
from collections import defaultdict, Counter

def count_pairs_with_one_diff(a):
    n = len(a)
    if n < 3:
        return 0
    m0 = defaultdict(Counter)  # key: (a[i+1], a[i+2]) -> counts of a[i]
    m1 = defaultdict(Counter)  # key: (a[i], a[i+2])   -> counts of a[i+1]
    m2 = defaultdict(Counter)  # key: (a[i], a[i+1])   -> counts of a[i+2]

    for i in range(n - 2):
        x, y, z = a[i], a[i+1], a[i+2]
        m0[(y, z)][x] += 1
        m1[(x, z)][y] += 1
        m2[(x, y)][z] += 1

    def sum_pairs(dct):
        total = 0
        for cnt in dct.values():
            s = sum(cnt.values())
            total_pairs = s * (s - 1) // 2
            same_pairs = sum(c * (c - 1) // 2 for c in cnt.values())
            total += total_pairs - same_pairs  # pairs with differing varying component
        return total

    return sum_pairs(m0) + sum_pairs(m1) + sum_pairs(m2)

def main():
    data = list(map(int, sys.stdin.buffer.read().split()))
    t = data[0]
    idx = 1
    out_lines = []
    for _ in range(t):
        n = data[idx]; idx += 1
        a = data[idx:idx+n]; idx += n
        out_lines.append(str(count_pairs_with_one_diff(a)))
    sys.stdout.write("\n".join(out_lines))

if __name__ == "__main__":
    main()




"""测试数据：
3
5
2 1 1 1 2
5
4 3 4 3 4
8
5 5 4 3 4 5 5 3
预期输出
2
0
2
"""